<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
            什么是闭包
                函数对其周围状态的引用捆绑在一起构成闭包，简而言之就是一个函数可以访问到另一个函数的变量
            优点
                变量不会被垃圾回收机制回收、形成局部作用域，防止变量名被污染
            缺点
                由于不会被回收需要及时清理否则会导致内存溢出，也有安全问题会导致内存泄漏
        */ 
    //    function foo(){
    //        let a = 10
    //        return function (){
    //            console.log(a)
    //        }
    //    }
    //    let myFn = foo()
    //    myFn()
    // 使用闭包解决问题
    // for(var i = 0; i <10 ; i++) {
    //     // let a = i
    //     (function (i){
    //         setTimeout(()=>{
    //             console.log(i)
    //         })
    //     })(i)
    // }
    </script>
</body>
</html>